import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { resolve } from 'path'
import { createStyleImportPlugin, VantResolve } from 'vite-plugin-style-import';

import autoprefixer from 'autoprefixer'
import postcsspxtoviewport8plugin from 'postcss-px-to-viewport-8-plugin';

export default defineConfig({
  plugins: [
    vue(),
    createStyleImportPlugin({
      resolves: [
        VantResolve()
      ],
      libs: [
        {
          libraryName: "vant",
          esModule: true,
          resolveStyle: (name) => {
             if (name == 'show-toast') {
               return `../es/toast/style/index`; //修改vant引入路径
             } else {
               return `../es/${name}/style/index`; //修改vant引入路径
             }
           },
        }
      ]
    }),

  ],
  resolve: {
    alias: {
      '@': resolve(__dirname, 'src'),
      '@assets': resolve(__dirname, 'src/assets'),
      '@image': resolve(__dirname, 'src/assets/Image'),
      '@components': resolve(__dirname, 'src/components'),
    }
  },
  css: { //预设scss是
    preprocessorOptions: {
      scss: {
        additionalData: '@import "src/assets/mins.scss";'
      }
    },
    postcss: {
      plugins: [

        autoprefixer(// 使用autoprefixer
          {
            overrideBrowserslist: [
              'Android 4.1',
              'iOS 7.1',
              'Chrome > 31',
              'ff > 31',
              'ie >= 8',
              'last 2 versions', // 所有主流浏览器最近2个版本
            ], // 根据实际需求配置
          }
        ),  
        postcsspxtoviewport8plugin(
          {
            unitToConvert: 'px',
            viewportWidth: file => file.indexOf('van') > 0 ? 375 : 750,
            unitPrecision: 6, // 单位转换后保留的精度
            propList: ['*'], // 能转化为vw的属性列表
            viewportUnit: 'vw', // 希望使用的视口单位
            fontViewportUnit: 'vw', // 字体使用的视口单位
            selectorBlackList: ['ignore-'], // 需要忽略的CSS选择器，不会转为视口单位，使用原有的px等单位。
            minPixelValue: 1, // 设置最小的转换数值，如果为1的话，只有大于1的值会被转换
            mediaQuery: true, // 媒体查询里的单位是否需要转换单位
            replace: true, //  是否直接更换属性值，而不添加备用属性
            exclude: [], // 忽略某些文件夹下的文件或特定文件，例如 'node_modules' 下的文件
            include: [], // 如果设置了include，那将只有匹配到的文件才会被转换
            landscape: false, // 是否添加根据 landscapeWidth 生成的媒体查询条件 @media (orientation: landscape)
            landscapeUnit: 'vw', // 横屏时使用的单位
            landscapeWidth: 1628, // 横屏时使用的视口宽度
          }
        )
      ],
    },

  },
  build: {
    outDir: 'dist',//Specify the output directory (relative to project root).
  },
  server: {
    strictPort: false,//如果端localhost口占用，是退出，还是尝试其他端口
    https: false,// 是否开启 https
    // 反向代理
    proxy: {
      '/api': {
        target: 'https://ap3.dskc1314.com',
        // pathRewrite: { '^/api': '' },
        // target: 'https://jidaikejisz.com',
       
        secure: true,
        changeOrigin: true,
        rewrite:(path) => {

          return path.replace(/^\/api/,'')        
        },
        bypass(req, res, options) {
          const proxyURL = options.target + options.rewrite(req.url);
          console.log('proxyURL', proxyURL);
          req.headers['x-req-proxyURL'] = proxyURL; // 设置未生效
          res.setHeader('x-req-proxyURL', proxyURL); // 设置响应头可以看到
        },
      }
    }
  },

})
